package com.huaxin.hxmodulesystem.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.huaxin.hxmodulesystem.dto.ResponseResult;
import com.huaxin.hxmodulesystem.dto.request.AddSysUserReqDTO;
import com.huaxin.hxmodulesystem.dto.request.SysUserLoginReqDTO;
import com.huaxin.hxmodulesystem.dto.request.UpdatePasswordReqDTO;
import com.huaxin.hxmodulesystem.dto.request.UpdateSysUserReqDTO;
import com.huaxin.hxmodulesystem.dto.response.SysUserLoginRespDTO;
import com.huaxin.hxmodulesystem.models.SysUser;

import java.time.LocalDateTime;

public interface SysUserService extends IService<SysUser> {
    //新增用户
    ResponseResult<String> addUser(AddSysUserReqDTO in);

    //更新用户
    ResponseResult<String> updateUser(UpdateSysUserReqDTO in);

    //删除用户
    ResponseResult<String> deleteUser(String userId);

    //禁用用户
    ResponseResult<String> disableUser(String userId, Integer status, LocalDateTime lockedUntil);

    //获取用户列表
    ResponseResult<Page<SysUser>> getUserList(Integer pageNum, Integer pageSize, String search, Integer status);

    //获取用户信息
    SysUser getUserInfoById(String userId);

    //给用户设置角色
    ResponseResult<String> setUserRole(String userId, String roleId);

    //登录
    ResponseResult<SysUserLoginRespDTO> login(SysUserLoginReqDTO in);

    //初始化密码
    ResponseResult<String> initPassword(String userId);

    //修改密码
    ResponseResult<String> updatePassword(UpdatePasswordReqDTO in);

    //查询账户是否已存在
    Boolean queryAccountExist(String userName);

    //初始化管理员账号
    void initAdminAccount();
}
